#ifndef __WHIMSY_NETWORK_ARCHIVE_HPP__SHANHAOBO_19800429__
#define __WHIMSY_NETWORK_ARCHIVE_HPP__SHANHAOBO_19800429__

#include "./WhimsyNetworkForwardDeclare.hpp"

namespace Whms
{
    namespace Network
    {
        namespace Archive
        {
            struct Type : public ::Whms::Archive::Type
            {
                typedef ::bm::bvector<> tBitBuffer;

                tBitBuffer  m_BitBuffer;
                //////////////////////////////////////////////////////////////////////////

                virtual ::Whms::Size::Type ReadFrom(::Whms::Int8::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::Int16::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::Int32::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::Int64::In) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type ReadFrom(::Whms::UInt8::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::UInt16::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::UInt32::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::UInt64::In) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type ReadFrom(::Whms::Real32::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::Real64::In) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type ReadFrom(::Whms::Vec2::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::Vec3::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::Vec4::In) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type ReadFrom(::Whms::IntVec2::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::IntVec3::In) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type ReadFrom(::Whms::IntVec4::In) = WIZ_NULLPTR;

                //////////////////////////////////////////////////////////////////////////

                virtual ::Whms::Size::Type WriteTo(::Whms::Int8::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::Int16::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::Int32::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::Int64::Out) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type WriteTo(::Whms::UInt8::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::UInt16::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::UInt32::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::UInt64::Out) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type WriteTo(::Whms::Real32::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::Real64::Out) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type WriteTo(::Whms::Vec2::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::Vec3::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::Vec4::Out) = WIZ_NULLPTR;

                virtual ::Whms::Size::Type WriteTo(::Whms::IntVec2::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::IntVec3::Out) = WIZ_NULLPTR;
                virtual ::Whms::Size::Type WriteTo(::Whms::IntVec4::Out) = WIZ_NULLPTR;

                //////////////////////////////////////////////////////////////////////////
            };
        } /// end of namespace Archive
    } /// end of namespace Network
} /// end of namespace Whim

#endif /*__WHIMSY_NETWORK_ARCHIVE_HPP__SHANHAOBO_19800429__*/
